package com.cjkj.equipment.service;

import com.cjkj.equipment.domain.MonitorPadData;
import com.cjkj.equipment.domain.dto.BreathAndHeartAVGDto;
import com.cjkj.system.api.domain.request.EquipmentHDAReq;
import com.cjkj.system.api.domain.request.PatientEquipmentRTDReq;
import com.cjkj.system.api.domain.request.RecordsReq;

import javax.jms.Message;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 *
 * @author cjkj
 * @date 2024-08-30
 */
public interface MonitorPadDataService {
    /**
     * 插入接收到的数据
     **/
    void insertData(MonitorPadData monitorPadData);

    void judgeWarn(MonitorPadData data);

    /**
     * 查询时间范围内的最后一条数据
     */
    MonitorPadData getLastByTimeRange(String equipmentNo,Date startTime,Date endTime);

    /**
     * 处理从物联网平台接收到的数据
     **/
    void processMessage(Message message);

    /**
     * 根据就诊号和时间查询睡眠监测点数据
     **/
    List<MonitorPadData> listData(RecordsReq req);

    /**
     * APP根据设备使用者ID，时间段查询睡眠监测垫数据
     */
    Map<String, Object> appListData(EquipmentHDAReq req);

    /**
     * 小程序端查询患者就诊期间，设备的最新一条监测数据
     */
    MonitorPadData getLastDataOnUse(PatientEquipmentRTDReq req);

    /**
     * 保存睡眠分期数据
     * @param equipmentNo 设备编号
     * @param benchmarkData 基准数据（前25条在床数据作为基准数据）
     * @param avgDto 基准数据心率和呼吸的平均值
     */
    void inertSleepStageData (String equipmentNo, List<MonitorPadData> benchmarkData, BreathAndHeartAVGDto avgDto, Date reportEndTime);

    void doSaveData(List<MonitorPadData> benchmarkData);

}
